package com.cskaoyan.day6._01_homeworkreview;

import java.util.HashMap;
import java.util.Map;

/**
 * 2. 给定一个整数数组和一个目标值，找出数组中和为目标值的两个数, 返回它们的索引。
 * 你可以假设每个输入只对应一种答案，且同样的元素不能被重复利用。
 * <p>
 * 比如：nums = [2, 7, 11, 15], target = 9.
 * 因为 nums[0] + nums[1] = 2 + 7 = 9. 所以返回 [0, 1].
 *
 * @author Common-zhou
 * @since 2023-03-04 09:48
 */
public class Homework2 {
    public static void main(String[] args) {
        //for (int i = 0; i <; i++) {
        //    for (int j = 0; j < ; j++) {
        //        if (nums[i] + num[j] == target){
        //
        //        }
        //    }
        //}

        // 使用Map来实现
        // key是什么东西  value是什么东西
        // key是值。value是下标
        // key，value需要为你的业务服务。

        int[] nums = {2, 7, 11, 15};
        int target = 9;

        //   2   7                  0 1
        // key是value值， value 是下标位置
        Map<Integer, Integer> map = new HashMap<>();
        // 边遍历nums， 边判断  找target-value 是否存在这个Map里面
        // 说明Map中一定存在一个互补的。当前i位置是一个， 从Map中获取出来的是另外一个符合条件的
        for (int i = 0; i < nums.length; i++) {
            int num = nums[i];

            Integer index = map.get(target - num);
            if (index != null) {
                // 找到一个互补的
                // 当前位置i是一个； map.get(target - num) 是另外一个
                System.out.println(i + "___" + index);
                break;
            }

            // 如果我没找到。把当前这个位置的值加进去
            map.put(num, i);
        }


    }
}
